import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

// 定义公开路由列表（白名单）
const publicRoutes = ['/signin', '/register', '/404'] // 添加静态资源路径

async function validateToken(token: string): Promise<boolean> {
  // 调用 API 验证 token 是否有效
  const response = await fetch('/api/validate-token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ token }),
  })
  const data = await response.json()
  return data.isValid
}

export async function middleware(request: NextRequest) {
  const path = request.nextUrl.pathname
  const token = request.cookies.get('token') // 从 HTTP Only Cookie 获取 Token

  const url = new URL(request.url)
  console.log(url.pathname, '===中间件--')
  if (url.pathname === '/') {
    // 示例：未登录用户重定向到登录页
    // const isLoggedIn = checkAuth(request)

    // if (!isLoggedIn) {
    //   return NextResponse.redirect(new URL('/login', request.url))
    // }

    // 已登录用户重定向到仪表盘
    return NextResponse.redirect(new URL('/dashboard', request.url))
  }

  return NextResponse.next()

  // // ✅ 第一步：检查是否为公开路由
  // if (publicRoutes.includes(path)) {
  //   return NextResponse.next() // 允许访问公开路由
  // }

  // // ✅ 第二步：处理已登录用户
  // if (token) {
  //   // 已登录用户访问非公开路由 → 正常放行（如 dashboard）

  //   // 验证 token 是否有效
  //   const isValidToken = await validateToken(token)
  //   if (!isValidToken) {
  //     return NextResponse.redirect(new URL('/signin', request.url))
  //   }
  //   return NextResponse.next()
  // }

  // // ❌ 第三步：未登录用户访问受保护路由 → 跳转至登录页
  // const redirectUrl = new URL('/signin', request.url)

  // // 保存原始路径作为登录后跳转目标
  // redirectUrl.searchParams.set('redirect', path)

  // return NextResponse.redirect(redirectUrl)
}

// 配置中间件匹配的路由，排除静态资源和 API 路径
export const config = {
  matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
}
